package es.ucm.is.www.GUI.client.admin;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.rpc.ServiceDefTarget;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Label;

import es.ucm.is.www.GUI.client.panels.CallbackGeneric;
import es.ucm.is.www.GUI.client.panels.ErrorPanel;
import es.ucm.is.www.GUI.client.panels.PanelAlert;
import es.ucm.is.www.GUI.client.panels.PanelConfirm;
import es.ucm.is.www.GUI.client.panels.PanelWaitingRight;
import es.ucm.is.www.GUI.client.register.RegisterService;
import es.ucm.is.www.GUI.client.register.RegisterServiceAsync;

/**
 * <p>Title: DeleteStatePanel.java </p>
 *
 * <p>Description: Panel que nos permite borrar un jugador. </p>
 *
 * <p>Copyright: Enrique Lopez Manas </p>
 *
 * @author Enrique Lopez Manas
 * @author Angel Ruiz Alonso
 * @version 1.0
 * @see
 */

	 public class DeleteStatePanel extends Composite {
		 final VerticalPanel panel = new VerticalPanel();
		 final TextBox userName = new TextBox();
		 final HTML htmlPlayer = new HTML("<b>Nombre de jugador</b>");
		 final Button button = new Button("Borrar");
		 final HTML title = new HTML("<b>Borrar</b>");
		 String user = null;
		 /**
		  * Metodo constructor de la clase
		  */
		 public DeleteStatePanel() {
			 panel.add(title);
			 panel.add(htmlPlayer);
			 panel.add(userName);
			 userName.setMaxLength(25);
			 userName.setVisibleLength(25);

			 button.setSize("178px","35px");
			 
			 button.addClickListener(new ClickListener() {
				 
				 
				 
				 
				 public void onClick(Widget sender) {
					 PanelConfirm p = new PanelConfirm("Advertencia","&#191;Desea realmente borrar al usuario?");
					 CallbackGeneric c = new CallbackGeneric(){
						 public void acept(){
							 
							 user = userName.getText();
							    AdminServiceAsync servicio = (AdminServiceAsync) GWT.create(AdminService.class);
								ServiceDefTarget endpoint = (ServiceDefTarget) servicio;
								endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "servletAdmin");
								final PanelWaitingRight p = new PanelWaitingRight("Borrando usuario");
								p.mostrar();
								AsyncCallback<Boolean> callback = new AsyncCallback<Boolean>(){
									
									public void onFailure(Throwable caught) {
										p.ocultar();
										ErrorPanel error = new ErrorPanel("Error conectando con el servidor...");
										error.show();
									}

									public void onSuccess(Boolean result) {
										p.ocultar();
										if(result == true){
											PanelAlert.Alert("INFORMACI&Oacute;N", "Usuario: <b>"+ userName.getText() + "</b> borrado");
										  //RootPanel.get("Left").clear();
										  //RootPanel.get("Right").clear();	
									      //RootPanel.get("Left").add(new PanelLateralAdmJugadores());		 
									      //RootPanel.get("Right").add(new PanelConfirmDeleteUser(user));
											
										}else{
											PanelAlert.Alert("INFORMACI&Oacute;N", "El usuario "+ userName.getText() +" no est&aacute; registrado en el sistema");
											/*PopupPanel p = new PopupPanel(true);
											p.setWidget(new HTML("El usuario no est&aacute; registrado en el sistema"));
											p.center();
											p.show();*/
										}
									}
							    
								};
						 servicio.deleteUser(user, callback);
								
						 }
						 
						 public void cancel() {
							
						 }
					 };
					 p.mostrar(c);
					 
					 
					 
					 
					 	
			  	};
			 });
			 panel.add(button);
			 initWidget(panel);
		 }
	 
	 
}
